package com.um.springboot.starter.utils;

/**
 * @Title 枚举工具类
 * @Description
 * @Author renjunwei
 * @Date 2021/8/30 3:24 下午
 */
public class EnumUtil {

    /**
     * 枚举类通用接口
     */
    public interface BaseEnum {
        /**
         * 枚举公共属性
         * @return
         */
        String getKey();
    }

    /**
     * 错误枚举接口
     */
    public interface ErrorEnum {

        /**
         * 错误代码
         * @return
         */
        Integer getCode();

        /**
         * 错误描述
         * @return
         */
        String getMsg();


    }


    /**
     * 通过key获取枚举属性
     * @param enumClass
     * @param key
     * @param defaultEach
     * @param <T>
     * @return
     */
    public static <T extends BaseEnum> T getEnum(Class<T> enumClass, String key,T defaultEach){
        for (T each : enumClass.getEnumConstants()) {
            if(each.getKey().equals(key)){
                return each;
            }
        }
        return defaultEach;
    }

    /**
     * 通过key获取枚举属性
     * @param enumClass
     * @param key
     * @param <T>
     * @return
     */
    public static <T extends BaseEnum> T getEnum(Class<T> enumClass, String key){
        return getEnum(enumClass,key,null);
    }
}
